home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / ear / mui23dev.lha / MUI / Developer / Autodocs / MUImaster.doc < prev   
Text File  |  1994-12-23  |  19KB  |  637 lines

  1. TABLE OF CONTENTS
  2.  
  3. muimaster.library/--background--
  4. muimaster.library/MUI_AllocAslRequest
  5. muimaster.library/MUI_AslRequest
  6. muimaster.library/MUI_CreateCustomClass
  7. muimaster.library/MUI_DeleteCustomClass
  8. muimaster.library/MUI_DisposeObject
  9. muimaster.library/MUI_Error
  10. muimaster.library/MUI_FreeAslRequest
  11. muimaster.library/MUI_FreeClass
  12. muimaster.library/MUI_GetClass
  13. muimaster.library/MUI_MakeObjectA
  14. muimaster.library/MUI_NewObjectA
  15. muimaster.library/MUI_Redraw
  16. muimaster.library/MUI_RequestA
  17. muimaster.library/MUI_RejectIDCMP
  18. muimaster.library/MUI_RequestIDCMP
  19. muimaster.library/MUI_SetError
  20.  
  21.  
  22. muimaster.library/--background--             muimaster.library/--background--
  23.  
  24.     PURPOSE
  25.     muimaster.library contains functions for creating and diposing
  26.     objects, for requester handling and for controlling custom
  27.     classes. Additionally, several of the standard MUI classes are
  28.     built into muimaster.library. For you as a programmer, there
  29.     is no difference between using a builtin class or an external
  30.     class coming as "sys:classes/<foobar>.mui". The MUI object
  31.     generation call takes care of this situation and loads
  32.     external classes automatically when they are needed.
  33.  
  34.  
  35. muimaster.library/MUI_AllocAslRequest   muimaster.library/MUI_AllocAslRequest
  36.  
  37.     NAME
  38.     MUI_AllocAslRequest
  39.  
  40.     FUNCTION
  41.     Provide an interface to asl.library. Using this ensures
  42.     your application will benefit from future expansions
  43.         to MUI's window and iconification handling.
  44.  
  45.     SEE ALSO
  46.     asl.library/AllocAslRequest
  47.  
  48.  
  49. muimaster.library/MUI_AslRequest
  50.  
  51.     NAME
  52.     MUI_AslRequest
  53.  
  54.     FUNCTION
  55.     Provide an interface to asl.library. Using this ensures
  56.     your application will benefit from future expansions
  57.         to MUI's window and iconification handling.
  58.  
  59.     SEE ALSO
  60.     asl.library/AslRequest
  61.  
  62.  
  63. muimaster.library/MUI_CreateCustomClass                 MUI_CreateCustomClass
  64.  
  65.     NAME
  66.     MUI_CreateCustomClass -- create a public/private custom class.
  67.  
  68.     SYNOPSIS
  69.     MUI_CreateCustomClass (base, supername, supermcc, datasize, dispfunc)
  70.                             A0    A1        A2        D0        A3
  71.  
  72.     struct MUI_CustomClass * MUI_CreateCustomClass(
  73.        struct Library *, char *, int, APTR );
  74.  
  75.     FUNCTION
  76.     This function creates a public or private MUI custom class.
  77.     Public custom classes are shared libraries and can be found
  78.     in "libs:mui/<foobar>.mcc". Private classes simply consist
  79.     of a dispatcher and are built into applications.
  80.  
  81.     MUI_CreateCustomClass() returns a pointer to a struct
  82.     MUI_CustomClass which in turn contains a pointer to a
  83.     struct IClass. For private classes, this struct IClass
  84.     pointer needs to be fed to a intuition.library/NewObject()
  85.     call to create new objects.
  86.  
  87.     MUI creates the dispatcher hook for you, you may *not*
  88.     use the IClass->cl_Dispatcher.h_Data field! If you need
  89.     custom data for your dispatcher, use the cl_UserData
  90.     of the IClass structure or the mcc_UserData of the
  91.     MUI_CustomClass structure.
  92.  
  93.     For public classes, MUI makes sure that a6 contains
  94.     a pointer to your library base when your dispatcher
  95.     is called. For private classes, you will need to keep
  96.     track of A4 or similiar things the compiler may need yourself.
  97.  
  98.     INPUTS
  99.     base =      if you create a public class, you have to call
  100.                 MUI_CreateCustomClass() from your libraries
  101.                 init function. In this case, place your library
  102.                 base pointer here. For private classes, you must
  103.                 supply NULL.
  104.  
  105.     supername = super class of your class. This can either
  106.                 be a builtin MUI class ("xyz.mui") or a external
  107.                 custom class ("xyz.mcc").
  108.  
  109.     supermcc =  if (and only if) the super class is a private
  110.                 custom class and hence has no name, you are allowed
  111.                 to pass a NULL supername and a pointer to the
  112.                 MUI_CustomClass structure of the super class here.
  113.  
  114.     datasize =  size of your classes data structure.
  115.  
  116.     dispfunc =  your classes dispatcher function (no hook!).
  117.                 The dispatcher will be called with a struct IClass
  118.                 in a0, with your object in a2 and the message in a1.
  119.  
  120.     RESULT
  121.     A pointer to a struct MUI_CustomClass or NULL to indicate
  122.     an error.
  123.  
  124.     SEE ALSO
  125.     MUI_DeleteCustomClass()
  126.  
  127.  
  128. muimaster.library/MUI_DeleteCustomClass                 MUI_DeleteCustomClass
  129.  
  130.     NAME
  131.     MUI_DeleteCustomClass -- delete a public/private custom class.
  132.  
  133.     SYNOPSIS
  134.     MUI_DeleteCustomClass ( mcc )
  135.                             A0
  136.  
  137.     BOOL MUI_DeleteCustomClass(struct MUI_CustomClass *);
  138.  
  139.     FUNCTION
  140.     Delete a public or private custom class. Note that you
  141.     must not delete classes with outstanding objects or sub
  142.     classes.
  143.  
  144.     INPUTS
  145.     mcc = pointer obtained from MUI_CreateCustomClass().
  146.  
  147.     RESULT
  148.     TRUE if all went well, FALSE if some objects or
  149.     sub classes were still hanging around. Nothing
  150.     will be freed in this case.
  151.  
  152.     SEE ALSO
  153.     MUI_CreateCustomClass()
  154.  
  155.  
  156. muimaster.library/MUI_DisposeObject       muimaster.library/MUI_DisposeObject
  157.  
  158.     NAME
  159.     MUI_DisposeObject -- Delete a MUI object.
  160.  
  161.     SYNOPSIS
  162.     MUI_DisposeObject( object )
  163.                        A0
  164.  
  165.     VOID MUI_DisposeObject( APTR );
  166.  
  167.     FUNCTION
  168.     Deletes a MUI object and all of it's auxiliary data.
  169.     These objects are all created by MUI_NewObject(). Objects
  170.     of certain classes "own" other objects, which will also
  171.     be deleted when the object is passed to MUI_DisposeObject().
  172.     Read the per-class documentation carefully to be aware
  173.     of these instances.
  174.  
  175.     INPUTS
  176.     object = abstract pointer to a MUI object returned by
  177.              MUI_NewObject(). The pointer may be NULL, in which case
  178.              this function has no effect.
  179.  
  180.     RESULT
  181.     None.
  182.  
  183.     SEE ALSO
  184.     MUI_NewObject(), SetAttrs(), GetAttr().
  185.  
  186.  
  187. muimaster.library/MUI_Error                       muimaster.library/MUI_Error
  188.  
  189.     NAME
  190.     MUI_Error -- Return extra information from the MUI system.
  191.  
  192.     SYNOPSIS
  193.     LONG MUI_Error(VOID);
  194.  
  195.     FUNCTION
  196.     Some MUI functions will set an error if they fail for
  197.     some reason. The error functions is task sensitive,
  198.     only the task that caused the error will receive it
  199.     from this function.
  200.  
  201.     RESULT
  202.     Currently, the following error values are defined:
  203.  
  204.     MUIE_OK                  - no error, everything allright.
  205.     MUIE_OutOfMemory         - went out of memory.
  206.     MUIE_OutOfGfxMemory      - went out of graphics memory.
  207.     MUIE_InvalidWindowObject - NULL window specified.
  208.     MUIE_MissingLibrary      - can't open a needed library.
  209.     MUIE_NoARexx             - unable to create arexx port.
  210.     MUIE_SingleTask          - application is already running.
  211.  
  212.     SEE ALSO
  213.     MUI_SetError()
  214.  
  215.  
  216. muimaster.library/MUI_FreeAslRequest     muimaster.library/MUI_FreeAslRequest
  217.  
  218.     NAME
  219.     MUI_FreeAslRequest
  220.  
  221.     FUNCTION
  222.     Provide an interface to asl.library. Using this ensures
  223.     your application will benefit from future expansions
  224.         to MUI's window and iconification handling.
  225.  
  226.     SEE ALSO
  227.     asl.library/FreeAslRequest
  228.  
  229.  
  230. muimaster.library/MUI_FreeClass               muimaster.library/MUI_FreeClass
  231.  
  232.     NAME
  233.      MUI_FreeClass -- Free class.
  234.  
  235.     SYNOPSIS
  236.     MUI_FreeClass( classptr )
  237.                    A0
  238.  
  239.     VOID MUI_FreeClass(struct IClass *classptr);
  240.  
  241.     FUNCTION
  242.     This function is obsolete since MUI V8.
  243.     Use MUI_DeleteCustomClass() instead.
  244.  
  245.     SEE ALSO
  246.     MUI_CreateCustomClass(), MUI_DeleteCustomClass()
  247.  
  248.  
  249. muimaster.library/MUI_GetClass                 muimaster.library/MUI_GetClass
  250.  
  251.     NAME
  252.      MUI_GetClass -- Get a pointer to a MUI class.
  253.  
  254.     SYNOPSIS
  255.     class = MUI_GetClass( classid )
  256.     D0                    A0
  257.  
  258.     struct IClass * MUI_GetClass(char *classid);
  259.  
  260.     FUNCTION
  261.     This function is obsolete since MUI V8.
  262.     Use MUI_CreateCustomClass instead.
  263.  
  264.     SEE ALSO
  265.     MUI_CreateCustomClass(), MUI_DeleteCustomClass()
  266.  
  267.  
  268. muimaster.library/MUI_MakeObjectA           muimaster.library/MUI_MakeObjectA
  269.  
  270.     NAME
  271.      MUI_MakeObjectA -- create an object from the builtin object collection.
  272.      MUI_MakeObject -- Varargs stub for MUI_MakeObjectA
  273.  
  274.     SYNOPSIS
  275.     object = MUI_MakeObjectA( objtype, params )
  276.     D0                        D0       A0
  277.  
  278.     Object * MUI_MakeObjectA(ULONG type, ULONG *params);
  279.  
  280.     Object * MUI_MakeObject(ULONG type, ...);
  281.  
  282.     FUNCTION
  283.     Prior to muimaster.library V8, MUI was distributed with several macros
  284.     to help creating often used objects. This practice was easy, but using
  285.     lots of these macros often resulted in big programs. Now, muimaster
  286.     library contains an object library with several often used objects
  287.     already built in.
  288.  
  289.     MUI_MakeObject() takes the type of the object as first parameter and
  290.     a list of additional (type specific) parameters. Note that these
  291.     additional values are *not* a taglist!
  292.  
  293.     See the header file mui.h for documentation on object types and the
  294.     required parameters.
  295.  
  296.     SEE ALSO
  297.     MUI_CreateCustomClass(), MUI_DeleteCustomClass()
  298.  
  299.  
  300. muimaster.library/MUI_NewObjectA             muimaster.library/MUI_NewObjectA
  301.  
  302.    NAME
  303.     MUI_NewObjectA -- Create an object from a class.
  304.     MUI_NewObject -- Varargs stub for MUI_NewObjectA().
  305.  
  306.    SYNOPSIS
  307.     object = MUI_NewObjectA( class, tags )
  308.     D0                       A0     A1
  309.  
  310.     APTR MUI_NewObjectA( char *, struct TagItem * );
  311.  
  312.     object = MUI_NewObject( classID, Tag1, ... )
  313.  
  314.     APTR MUI_NewObject( classID, ULONG, ... );
  315.  
  316.    FUNCTION
  317.     This is the general method of creating objects from MUI classes.
  318.     You specify a class by its ID string. If the class is not
  319.     already in memory or built into muimaster.library, it will be
  320.     loaded using OpenLibrary("mui/%s",0).
  321.  
  322.     You further specify initial "create-time" attributes for the
  323.     object via a TagItem list, and they are applied to the resulting
  324.     generic data object that is returned. The attributes, their meanings,
  325.     attributes applied only at create-time, and required attributes
  326.     are all defined and documented on a class-by-class basis.
  327.  
  328.    INPUTS
  329.     classID = the name/ID string of a MUI class, e.g. "Image.mui".
  330.               Class names are case sensitive!
  331.  
  332.     tagList = pointer to array of TagItems containing attribute/value
  333.               pairs to be applied to the object being created.
  334.  
  335.    RESULT
  336.     A MUI object, which may be used in different contexts such
  337.     as an application, window or gadget, and may be manipulated
  338.     by generic functions. You eventually free the object using
  339.     MUI_DisposeObject().
  340.     NULL indicates failure, more information on the error can be
  341.     obtained with MUI_Error().
  342.  
  343.    BUGS
  344.  
  345.    SEE ALSO
  346.     MUI_DisposeObject(), MUI_Error(), SetAttrs(), GetAttr().
  347.  
  348.  
  349. muimaster.library/MUI_Redraw                     muimaster.library/MUI_Redraw
  350.  
  351.    NAME
  352.     MUI_Redraw -- Redraw yourself.
  353.  
  354.    SYNOPSIS
  355.     MUI_Redraw( obj, flag )
  356.                 A0   D0
  357.  
  358.     VOID MUI_Redraw( Object *obj, ULONG flag );
  359.  
  360.    FUNCTION
  361.     With MUI_Redraw(), an object tells itself to refresh, e.g. when
  362.     some internal attributes were changed. Calling MUI_Redraw() is
  363.     only legal within a custom class dispatcher, using this function
  364.     within an applications main part is invalid!
  365.  
  366.     Most objects graphical representation in a window depends on some
  367.     attributes. A fuel gauge for example would depend on its
  368.     MUIA_Gauge_Current attribute, an animation object would
  369.     depend on MUIA_Animation_CurrentFrame.
  370.  
  371.     Whenever someone changes such an attribute with a SetAttrs() call,
  372.     the corresponding object receives an OM_SET method with the new
  373.     value. Usually, it could just render itself with some
  374.     graphics.library calls. However, if the object is placed
  375.     in a virtual group or if some other clipping or coordinate
  376.     translation is required, this simple rendering will lead
  377.     into problems.
  378.  
  379.     That's why MUI offers the MUI_Redraw() function call. Instead
  380.     of drawing directly during OM_SET, you should simply call
  381.     MUI_Redraw(). MUI calculates all necessary coordinates
  382.     and clip regions (in case of virtual groups) and then sends
  383.     a MUIM_Draw method to your object.
  384.  
  385.     To emphasize this point again: The only time your object is
  386.     allowed to render something is when you receive a MUIM_Draw
  387.     method. Drawing during other methods is illegal.
  388.  
  389.     Note: As long as no special cases (e.g. virtual groups) are
  390.           present, MUI_Redraw is very quick and calls your MUIM_Draw
  391.           method immediately. No coordinate translations or clip
  392.           regions need to be calculated.
  393.  
  394.    INPUTS
  395.     obj  - pointer to yourself.
  396.     flag - MADF_DRAWOBJECT or MADF_DRAWUPDATE.
  397.            The flag given here affects the objects flags when
  398.            MUI calls the MUIM_Draw method. There are several
  399.            caveats when implementing MUIM_DRAW, see the
  400.            developer documentation for details.
  401.  
  402.    EXAMPLE
  403.  
  404.     /* Note: This example was broken up to version 2.1 of muimaster.doc */
  405.  
  406.     LONG mSet(struct IClass *cl,Object *obj,sruct opSet *msg)
  407.     {
  408.        struct Data *data = INST_DATA(cl,obj);
  409.        struct TagItem *tags,*tag;
  410.  
  411.        for (tags=msg->ops_AttrList;tag=NextTagItem(&tags);)
  412.        {
  413.           switch (tag->ti_Tag)
  414.           {
  415.              case MYATTR_PEN_1:
  416.                 data->pen1 = tag->ti_Data;       /* set the new value  */
  417.                 data->mark = 1;                  /* set internal marker*/
  418.                 MUI_Redraw(obj,MADF_DRAWUPDATE); /* update ourselves   */
  419.                 break;
  420.  
  421.              case MYATTR_PEN_1:
  422.                 data->pen2 = tag->ti_Data;       /* set the new value  */
  423.                 data->mark = 2;                  /* set internal marker*/
  424.                 MUI_Redraw(obj,MADF_DRAWUPDATE); /* update ourselves   */
  425.                 break;
  426.           }
  427.        }
  428.  
  429.        return(DoSuperMethodA(cl,obj,msg));
  430.     }
  431.  
  432.     LONG mDraw(struct IClass *cl,Object *obj,struct MUIP_Draw *msg)
  433.     {
  434.        struct Data *data = INST_DATA(cl,obj);
  435.  
  436.        // ** Note: You *must* call the super method prior to do
  437.        // ** anything else, otherwise msg->flags will not be set
  438.        // ** properly !!!
  439.  
  440.        DoSuperMethodA(cl,obj,msg); // ALWAYS REQUIRED!
  441.  
  442.        if (msg->flags & MADF_DRAWUPDATE)
  443.        {
  444.           /* called as a result of our MUI_Redraw() during
  445.              MUIM_Set method. Depending on our internal
  446.              marker, we render different things. */
  447.  
  448.           switch (data->mark)
  449.           {
  450.              case 1: RenderChangesFromPen1(cl,obj); break;
  451.              case 2: RenderChangesFromPen2(cl,obj); break;
  452.           }
  453.        }
  454.        else if (msg->flags & MADF_DRAWOBJECT)
  455.        {
  456.           /* complete redraw, maybe the window was just opened. */
  457.           DrawObjectCompletely(cl,obj);
  458.        }
  459.  
  460.        /* if MADF_DRAWOBJECT wasn't set, MUI just wanted to update
  461.           the frame or some other part of our object. In this case
  462.           we just do nothing. */
  463.  
  464.         return(0);
  465.     }
  466.  
  467.    SEE ALSO
  468.     area.mui/MUIM_Draw
  469.  
  470.  
  471. muimaster.library/MUI_RequestA                 muimaster.library/MUI_RequestA
  472.  
  473.    NAME
  474.     MUI_RequestA  -- Pop up a MUI requester.
  475.  
  476.    SYNOPSIS
  477.     MUI_RequestA(app,win,flags,title,gadgets,format,params)
  478.                  D0   D1  D2    A0     A1      A2     A3
  479.  
  480.     LONG MUI_RequestA ( APTR app, APTR win, LONGBITS flags,
  481.          char *title, char *gadgets, char *format, APTR params );
  482.  
  483.     LONG MUI_Request ( APTR app, APTR win, LONGBITS flags,
  484.          char *title, char *gadgets, char *format, ...);
  485.  
  486.    FUNCTION
  487.     Pop up a MUI requester. Using a MUI requester instead
  488.     of a standard system requester offers you the possibility
  489.     to include text containing all the text engine format codes.
  490.  
  491.    INPUTS
  492.     app     - The application object. If you leave this
  493.               NULL, MUI_RequestA() will fall back to a
  494.               standard system requester.
  495.  
  496.     win     - Pointer to a window of the application. If
  497.               this is used, the requester will appear centered
  498.               relative to this window.
  499.  
  500.     flags   - For future expansion, must be 0 for now.
  501.  
  502.     title   - Title for the requester window. Defaults to the
  503.               name of the application when NULL (and app!=NULL).
  504.  
  505.     gadgets - Pointer to a string containing the possible answers.
  506.               The format looks like "_Save|_Use|_Test|_Cancel".
  507.               If you precede an entry with a '*', this answer will
  508.               become the active object. Pressing <Return> will
  509.               terminate the requester with this response. A '_'
  510.               character indicates the keyboard shortcut for this
  511.               response.
  512.  
  513.     format  - A printf-style formatting string.
  514.  
  515.     params  - Pointer to an array of ULONG containing the parameter
  516.               values for format.
  517.  
  518.    RESULT
  519.     0, 1, ..., N = Successive id values, for the gadgets
  520.     you specify for the requester.  NOTE: The numbering
  521.     from left to right is actually: 1, 2, ..., N, 0.
  522.     In case of a problem (e.g. out of memory), the
  523.     function returns FALSE.
  524.  
  525.    SEE ALSO
  526.     MUIA_Text_Contents
  527.  
  528.  
  529. muimaster.library/MUI_RejectIDCMP           muimaster.library/MUI_RejectIDCMP
  530.  
  531.    NAME
  532.      MUI_RejectIDCMP -- Reject previously requested input events.
  533.  
  534.    SYNOPSIS
  535.     MUI_RejectIDCMP( obj, flags )
  536.                       A0   D0
  537.  
  538.     VOID MUI_RejectIDCMP( Object *obj, ULONG flags );
  539.  
  540.    FUNCTION
  541.     Reject previously requested input events. You should
  542.     ensure that you reject all input events you requested
  543.     for an object before it gets disposed. Rejecting
  544.     flags that you never requested has no effect.
  545.  
  546.     Critical flags such as IDCMP_MOUSEMOVE and IDCMP_INTUITICKS
  547.     should be rejected as soon as possible. See MUI_RequestIDCMP()
  548.     for details.
  549.  
  550.    INPUTS
  551.     obj   - pointer to yourself as an object.
  552.     flags - one or more IDCMP_XXXX flags.
  553.  
  554.    EXAMPLE
  555.     LONG CleanupMethod(struct IClass *cl, Object *obj, Msg msg)
  556.     {
  557.        MUI_RejectIDCMP( obj, IDCMP_MOUSEBUTTONS|IDCMP_RAWKEY );
  558.        return(DoSuperMethodA(cl,obj,msg));
  559.     }
  560.  
  561.    SEE ALSO
  562.     MUI_RequestIDMCP()
  563.  
  564.  
  565. muimaster.library/MUI_RequestIDCMP         muimaster.library/MUI_RequestIDCMP
  566.  
  567.    NAME
  568.      MUI_RequestIDCMP -- Request input events for your custom class.
  569.  
  570.    SYNOPSIS
  571.     MUI_RequestIDCMP( obj, flags )
  572.                       A0   D0
  573.  
  574.     VOID MUI_RequestIDCMP( Object *obj, ULONG flags );
  575.  
  576.    FUNCTION
  577.     If your custom class needs to do some input handling, you must
  578.     explicitly request the events you want to receive. You can
  579.     request (and reject) events at any time.
  580.  
  581.     Whenever an input event you requested arrives at your parent
  582.     windows message port, your object will receive a
  583.     MUIM_HandleInput method.
  584.  
  585.     Note: Time consuming IDCMP flags such as IDCMP_INTUITICKS and
  586.           IDCMP_MOUSEMOVE should be handled with care. Too many
  587.           objects receiving them will degrade performance With
  588.           the following paragraph in mind, this isn't really
  589.           a problem:
  590.  
  591.           You should try to request critical events only when you
  592.           really need them and reject them with MUI_RejectIDCMP()
  593.           as soon as possible. Usually, mouse controlled objects
  594.           only need MOUSEMOVES and INTUITICKS when a button
  595.           is pressed. You should request these flags only
  596.           on demand, i.e. after receiving a mouse down event
  597.           and reject them immediately after the button has been
  598.           released.
  599.  
  600.    INPUTS
  601.     obj   - pointer to yourself as an object.
  602.     flags - one or more IDCMP_XXXX flags.
  603.  
  604.    EXAMPLE
  605.     LONG SetupMethod(struct IClass *cl, Object *obj, Msg msg)
  606.     {
  607.        if (!DoSuperMethodA(cl,obj,msg))
  608.           return(FALSE);
  609.  
  610.        /* do some setup here... */
  611.        ...;
  612.  
  613.        /* i need mousebutton events and keyboard */
  614.        MUI_RequestIDCMP( obj, IDCMP_MOUSEBUTTONS|IDCMP_RAWKEY );
  615.  
  616.        return(TRUE);
  617.     }
  618.  
  619.    SEE ALSO
  620.     MUI_RejectIDMCP()
  621.  
  622.  
  623. muimaster.library/MUI_SetError                 muimaster.library/MUI_SetError
  624.  
  625.    NAME
  626.      MUI_SetError -- Set an error value.
  627.  
  628.    SYNOPSIS
  629.     VOID MUI_SetError(LONG);
  630.  
  631.    FUNCTION
  632.     Setup a MUI error. MUI_Error() will return this value when
  633.     asked.
  634.  
  635.    SEE ALSO
  636.     MUI_Error()
  637.